%tabla de simbolos::= tabla(ultimoIndice,entradas)
%ultimoIndice ::= numeroEntero
%entradas ::= [[lexema,token,tamaño,offset,tipoDatos]|entradas]
%lexema ::= identificador
%token ::= ent | real | array | registro | puntero | palabrasReservadas
%tamaño,offset ::= numeroEntero

creaTS(tabla(0,[[]])).
%[[var,var,0,-1,vacio],
%		[fvar,fvar,0,-1,vacio],
%		[inicio,inicio,0,-1,vacio],
%		[fin,fin,0,-1,vacio],
%		[ent,ent,0,-1,vacio],
%		[real,real,0,-1,vacio],
%		[abs,abs,0,-1,vacio],
%		[sqr,sqr,0,-1,vacio],
%		[si,si,0,-1,vacio],
%		[sino,sino,0,-1,vacio],
%		[mientras,mientras,0,-1,vacio],
%		[nuevo,nuevo,0,-1,vacio],
%		[entonces,entonces,0,-1,vacio]])).

anadeSimbolo(tabla(UI,Ent),
		tabla(UI1,[[Lexema,Token,Tam,UI,TipoDatos]|Ent]),
		Lexema,Token,Tam,TipoDatos):- \+member([Lexema,_,_,_,_],Ent),UI1 is UI + Tam.

elemento([X|_R],1,X).
elemento(_,N,_):- N < 1,fail.
elemento([_X|R],N,X):- N1 is N-1,elemento(R,N1,X).

busca(tabla(_,[]),_Lex,[_L,vacio,_T,_O,_TD]).
busca(tabla(_,[[Lex,Tk,Ta,Of,TD]|_R]),Lex,[Lex,Tk,Ta,Of,TD]).
busca(tabla(_,[_T|R]),Lex,Tipo):-busca(tabla(_,R),Lex,Tipo).

variable(vacio):-fail.
variable(ent).
variable(real).
variable(puntero).
variable(array).
variable(registro).
